/*************************************************************************************
*                                  SRL ENGINE                                        *
*                                                                                    *
*                                                                                    *
*  File : SRL_Camera.h                                                               *
*  Author: SRL Killing                                                               *
*  Date: 25/02/10 20:30                                                              *
*  Description:                                                                      *
*                                                                                    *  
*  Licence :  LGPL                                                                   *
*                                                                                    *
*    Copyright (C) 2010 Pecatte Baptiste                                             *
*                                                                                    *
*    This program is free software; you can redistribute it and/or                   *
*    modify it under the terms of the GNU Lesser General Public                      *
*    License as published by the Free Software Foundation; either                    *
*    version 2.1 of the License, or (at your option) any later version.              *
*                                                                                    *
*    This program is distributed in the hope that it will be useful,                 *
*    but WITHOUT ANY WARRANTY; without even the implied warranty of                  *
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU                *
*    Lesser General Public License for more details.                                 *
*                                                                                    *
*    You should have received a copy of the GNU Lesser General Public                *
*    License along with this program; if not, write to the Free Software             *
*    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    *
*                                                                                    *
**************************************************************************************/

#ifndef DefineHeaderCamera
#define DefineHeaderCamera

namespace srl {
    
    class Camera {
        public:
            Camera();
            Camera(const srl::Camera &Camera);
            Camera(srl::Vector<float> p);
			Camera(srl::Vector<float> p, srl::Vector<float> t);
    
            void Init(int p_fovy, double p_ratio, double p_near, double p_far, float p_visionField, float p_walkSpeed, float p_runSpeed, int p_turnSpeed);
            void TargetMove(int x, int y);
            void Walk();
            void Run();
            void Left();
            void Right();
            void Back();
            
            void Look();
            void Perspective();
            
            Vector<float> GetPos();
            Vector<float> GetTar();
            
        private:
            void calculTarget();
            
            int turnSpeed;
            float walkSpeed;
            float runSpeed;
            float visionField;
            
            float angleH;
            float angleV;
            
            int fovy;
            double m_near;
            double ratio;
            double m_far;
            
            Vector<float> Position;
            Vector<float> Target;
            
        // Make SkyBox friend to get some Camera properties
        friend class SkyBox;
    };
    
};
#endif
